package com.mind.customer.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mind.system.domain.AjRule;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 规则配置(AjRule)表数据库访问层
 *
 * @author makejava
 * @since 2024-07-15 15:35:21
 */
public interface AjRuleMapper extends BaseMapper<AjRule> {

    /**
     * 查询规则配置数据集合
     * 
     * @param rule 规则配置信息
     * @return 规则配置数据集合
     */
    public List<AjRule> selectRuleList(AjRule rule);

    /**
     * 通过规则配置ID查询规则配置信息
     * 
     * @param ruleId 规则配置ID
     * @return 角色对象信息
     */
    public AjRule selectRuleById(Long ruleId);

    /**
     * 删除规则配置信息
     * 
     * @param ruleId 规则配置ID
     * @return 结果
     */
    public int deleteRuleById(Long ruleId);

    /**
     * 批量删除规则配置信息
     * 
     * @param ruleIds 需要删除的规则配置ID
     * @return 结果
     */
    public int deleteRuleByIds(Long[] ruleIds);

    /**
     * 修改规则配置信息
     * 
     * @param rule 规则配置信息
     * @return 结果
     */
    public int updateRule(AjRule rule);

    /**
     * 新增规则配置信息
     * 
     * @param rule 规则配置信息
     * @return 结果
     */
    public int insertRule(AjRule rule);
    
    /**
     * 批量新增规则配置信息
     * 
     * @param ruleList 规则配置信息
     * @return 结果
     */
    public int insertRuleBatch(List<AjRule> ruleList);
    
    
    /**
     * 根据名称查规则配置
     *
     * @param name 规则配置名称
     * @return 结果
     */
    AjRule selectRuleByName(String name);

    List<AjRule> selectByParams(@Param("ticketType") String ticketType, @Param("businessCateList") List<String> businessCateList, @Param("ruleId") Integer ruleId);


    List<AjRule> selectRuleByParams(AjRule ajRule);


    /**
     * 根据明细ID查规则列表
     * @param detailId
     * @return
     */
    List<AjRule> selectByDetailId(@Param("detailId") Integer detailId);
    /**
     * 根据票种、业务类别、规则ID查规则列表
     * @param ticketType
     * @param businessCates
     * @param ruleId
     * @return
     */
    List<AjRule> selectByParams2(@Param("ticketType") String ticketType, @Param("businessCateList") List<String> businessCates, @Param("ruleId") Integer ruleId, @Param("startApplyDate") Date startApplyDate, @Param("endApplyDate") Date endApplyDate);

}

